package com.newtype.meeting.client.service;

import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.newtype.meeting.client.model.Meeting;
import com.newtype.meeting.client.model.MeetingNotify;
import com.newtype.meeting.client.model.MeetingRecord;
import com.newtype.meeting.client.model.MeetingReport;
import com.newtype.meeting.shared.MeetingNotifyDTO;

public interface MeetingServiceAsync {

	void saveMeetingReport(MeetingReport meetingReport,
			AsyncCallback<Void> callback);

	void saveMeetingRecord(MeetingRecord meetingRecord,
			AsyncCallback<Void> callback);

	void saveMeeting(Meeting meeting, AsyncCallback<Meeting> callback);

	void cancelMeeting(String id, AsyncCallback<Void> callback);

	void deleteMeeting(String id, AsyncCallback<Void> callback);

	void getMeeting(String id, AsyncCallback<Meeting> callback);

	void listMeeting(String accountID, AsyncCallback<List<Meeting>> callback);

	void listMeetingRecord(String meetingID,
			AsyncCallback<List<MeetingRecord>> callback);

	void listMeetingReport(String meetingID,
			AsyncCallback<List<MeetingReport>> callback);

	void deleteMeetingRecord(String id, AsyncCallback<Void> callback);

	void deleteMeetingReport(String id, AsyncCallback<Void> callback);

	void getMeetingRecord(String id, AsyncCallback<MeetingRecord> callback);

	void getMeetingReport(String id, AsyncCallback<MeetingReport> callback);

	void deleteAllMeetingRecord(String meetingID, AsyncCallback<Void> callback);

	void deleteAllMeetingReport(String meetingID, AsyncCallback<Void> callback);

	void getMeetings(String accountID, AsyncCallback<List<Meeting>> callback);

	void saveMeetingNotify(MeetingNotify notify, AsyncCallback<Void> callback);

	void listMeetingNotice(String accountID,
			AsyncCallback<List<MeetingNotifyDTO>> callback);

	void getMeetingNotify(String id, AsyncCallback<MeetingNotify> callback);

	void listMeetingByCategory(String categoryID,
			AsyncCallback<List<Meeting>> callback);

	void listMeetingNotify(String meetingID,
			AsyncCallback<List<MeetingNotifyDTO>> callback);

}
